package com.nuanshui.heatedloan.fund.biz.dal.mapper;

import com.nuanshui.heatedloan.fund.model.UserCrowFunding;
import com.nuanshui.heatedloan.fund.vo.CrowdfundingPriceVO;
import com.nuanshui.heatedloan.fund.vo.CrowdfundingVO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;


/**
 * 用户众筹相关
 * @ClassName: UserCrowdfundingMapper 
 * @author zhangqing
 * @date 2016年3月7日 下午4:05:18 
 * @since 2.5.0
 */
public interface UserCrowdfundingMapper {
	
	/**
	 * 获取投资中的资金总额
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月7日 下午4:27:13
	 * @since 2.5.0
	 */
    Integer getUserInvestmentMoney(@Param("userId") String userId);
	
	/**
	 * 获取用户的预期总收益
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月7日 下午4:27:13
	 * @since 2.5.0
	 */
    Integer getUserExpectEarning(@Param("userId") String userId);
	
	/**
	 * 获取用户的历史总收益
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月7日 下午4:27:13
	 * @since 2.5.0
	 */
    Integer getUserTotalEarning(@Param("userId") String userId);
	
	/**
	 * 获取用户最近认购的众筹项目
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月7日 下午4:53:49
	 * @since 2.5.0
	 */
    CrowdfundingVO getUserLatelyCrowdfunding(@Param("userId") String userId);
	
	/**
	 * 获取最近的认购中众筹项目列表
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月7日 下午6:48:18
	 * @since 2.5.0
	 */
    List<CrowdfundingVO> getUnderwayCrowdfundingList();
	
	/**
	 * 获取最近的认购结束的众筹项目列表
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月7日 下午6:48:18
	 * @since 2.5.0
	 */
    List<CrowdfundingVO> getOverCrowdfundingList();
	
	/**
	 * 根据Id获取众筹项目
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月7日 下午8:48:55
	 * @since 2.5.0
	 */
    CrowdfundingVO getCrowdfundingById(@Param("id") String id);
	
	/**
	 * 根据交易号获取众筹项目
	 * @param 
	 * @author guohao
	 * @date 2016年3月9日 下午2:18:53
	 */
    UserCrowFunding getUserCrowdfundingByDealnum(@Param("dealNum") String dealNum);

	/**
	 * 获取用户参与的众筹
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月9日 上午11:07:41
	 * @since 2.5.0
	 */
    List<CrowdfundingVO> getCrowdfundingByUserId(@Param("userId") String userId);
	
	/**
	 * 获取用户参与的即将开始的众筹
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月8日 上午10:14:31
	 * @since 2.5.0
	 */
    List<CrowdfundingVO> getFutureCrowdfundingByUserId(@Param("userId") String userId);
	
	/**
	 * 获取用户参与的正在进行的众筹 
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月8日 上午10:14:31
	 * @since 2.5.0
	 */
    List<CrowdfundingVO> getUnderwayCrowdfundingByUserId(@Param("userId") String userId);
	
	/**
	 * 获取用户参与的已经结束的众筹
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月8日 上午10:14:31
	 * @since 2.5.0
	 */
    List<CrowdfundingVO> getOverCrowdfundingByUserId(@Param("userId") String userId);
	
	/**
	 * 获取相应的众筹用户已购买的份数
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月8日 下午2:07:01
	 * @since 2.5.0
	 */
    Integer getGardesByUserId(@Param("userId") String userId, @Param("crowdfundingId") String crowdfundingId);
	
	/**
	 * 获取某个众筹已经被购买的分数
	 * @param 
	 * @author guohao
	 * @date 2016年3月9日 上午11:20:10
	 * @sine 2.5.0
	 */
    Integer getBuyCount(@Param("crowdfundingId") String crowdfundingId);
	
	/**
	 * 保存用户购买众筹的记录
	 * @param 
	 * @author guohao
	 * @date 2016年3月9日 下午1:52:50
	 * @since 2.5.0
	 */
    void insertUserCrowdFunding(UserCrowFunding userCrowFunding);
	
	/** 
	 * 获取众筹项目已经认购的资金总额
	 * @param 
	 * @author zhangqing
	 * @date 2016年3月9日 上午11:36:03
	 * @since 2.5.0
	 */
    Integer getSubscribeMoneyByCrowdfundingId(@Param("crowdfundingId") String crowdfundingId);
	
	/**
	 * 修改用户众筹的状态
	 * @param 
	 * @author guohao
	 * @date 2016年3月9日 下午2:28:09
	 * @sine 2.5.0
	 */
    void updateUserCrowdFundingStatus(@Param("status") Integer status, @Param("dealNum") String dealNum);
	/**
	 * 更新付款方式
	 * @param 
	 * @author guohao
	 * @date 2016年3月9日 下午4:17:03
	 */
    void updateplatform(@Param("platform") String platform, @Param("dealNum") String dealNum);
	/**
	 * 获取最新的众筹时间
	 * @author hongyi
	 * @date 2016年3月24日下午12:02:50
	 * @return
	 */
    Date getCreatedAtTime();
	
	/**
	 * 获取当前时间还未结算的众筹列表 
	 * @author fuxinlin
	 * @date 2016年4月15日上午11:52:44
	 * @return
	 */
    List<UserCrowFunding> getCurrentUnstopedCrowFunding();
	
	/**
	 * 获取重酬结算的相关金额
	 * @param @param settleDealNum
	 * @param @return
	 * @author guohao
	 * @date 2016年5月3日 下午5:26:50
	 * @since $
	 */
    CrowdfundingPriceVO loadCrowdfundingPriceVOByDealnum(@Param("settleDealNum") String settleDealNum);
	
	/**
	 * 获取最新的众筹信息
	 * @author Gonzo
	 * @date 2016年8月17日下午7:11:45
	 * @return
	 */
    CrowdfundingVO getNewcrowdfunding();
}
